Load balancing functionality can be essential when distributing processes among multiple servers in a farm of servers. Load balancing provides a mechanism to scale out an application or applications to multiple computing machines. However, hardware-based load balancing mechanisms lack the ability to load balance servers implementing an application when requests need to be directed to an appropriate server. Additionally, simple round robin load balancing schemes result in the same data/document being loaded on multiple servers, tending to be inefficient and inelegant solutions for many situations. Moreover, prior load balancing schemes typically do not determine whether a file is already loaded on a server in a multi-server environment. That is, prior load balancing schemes do not consider the data cached on an individual server when balancing load across multiple computing machines in a farm. Thus, when a user requests a file, the file may be reloaded on a different server, thereby incurring a penalty in terms of time, memory, speed, etc., due to reloading the document again.
Accordingly, what is needed is a load balancing scheme which directs requests to appropriate servers, thereby providing improved performance and a better user experience.